package cc.shacocloud.redis.study.bloom_filter;

import cn.hutool.bloomfilter.BitMapBloomFilter;

import java.util.ArrayList;
import java.util.List;

/**
 * hutool 工具库中的布隆过滤器示例
 * <p>
 * 可能存在误判，当布隆过滤器说某个值存在时，这个值可能不存在；当它说不存在时，那就肯定不存在
 */
public class HutoolExample {

    public static void main(String[] args) {
        int size = 100000;

        // 初始化
        BitMapBloomFilter bloomFilter = new BitMapBloomFilter(10);

        for (int i = 0; i < size; i++) {
            bloomFilter.add(String.valueOf(i));
        }

        // 计算误伤
        int start = size + 1;
        int end = size + 200000;
        List<Integer> list = new ArrayList<>();
        for (int i = start; i < end; i++) {
            if (bloomFilter.contains(String.valueOf(i))) {
                list.add(i);
            }
        }

        System.out.println("误伤数：" + list.size());
    }
}
